package com.ruoyi.worker.mapper.attendance;
import com.ruoyi.worker.domain.MonthlyAttendanceIni;
import com.ruoyi.worker.domain.TermAttendanceRules;
import com.ruoyi.worker.domain.TermWorker;
import com.ruoyi.worker.domain.workAttendance.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @ClassName WorkAttendanceMapper
 * @Description 考勤信息
 * @Author leizhang
 * Date 2021/11/17 3:58 下午
 * @Version 1.0
 **/
public interface AttendanceDailyRecordMapper {
    /**
     * @Description : 查询长期工对应日期排班信息，以及考勤规则，打卡规则
     * @Author : leizhang
     * @Date 4:02 下午 2021/11/17
     * @param requestParam
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceInformation>
     **/
    List<AttendanceDailyRecord> listOfWorkAttendanceInformation(@Param("requestParam") Map<String,Object> requestParam);

    /**
     * @Description :通用考勤规则查询
     * @Author : leizhang
     * @Date 5:41 下午 2021/11/18
     * @param requestParam
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceInformation>
     **/
    TermAttendanceRules listOfTermAttendanceRules(Map<String,Object> requestParam);

    /**
     * @Description : 每日考勤信息汇总保存
     * @Author : leizhang
     * @Date 2:31 下午 2021/11/19
     * @param
     * @return void
     **/
    void saveAttendanceSumDailyInformations(List<AttendanceSumDailyRecord> attendanceSumDailyRecords);
     /**
      * @Description : 每日个人信息记录保存
      * @Author : leizhang
      * @Date 5:04 下午 2021/11/19
      * @param attendanceDailyRecords
      * @return void
      **/
    void saveAttendanceDailyInformations(List<AttendanceDailyRecord> attendanceDailyRecords);

    /**
     * @Description :通行记录保存
     * @Author : leizhang
     * @Date 9:58 上午 2021/11/21
     * @param monthlyAttendanceInis
     * @return void
     **/
    void saveAttendancePassRecord(List<MonthlyAttendanceIni> monthlyAttendanceInis);

    /**
     * @Description : 获取通行记录
     * @Author : leizhang
     * @Date 10:51 上午 2021/11/21
     * @param
     * @return java.util.List<com.ruoyi.worker.domain.MonthlyAttendanceIni>
     **/
    List<MonthlyAttendanceIni> listOfAttendancePassRecord(@Param("requestParam") Map<String,Object> requestParam);

    /**
     * @Description : 考勤信息汇总
     * @Author : leizhang
     * @Date 3:26 下午 2021/11/21
     * @param attendanceSumDailyRecord
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceSumDailyRecord>
     **/
    List<AttendanceSumDailyRecord> listOfAttendanceSumRecords(AttendanceSumDailyRecord attendanceSumDailyRecord);

    /**
     * @Description : 个人考勤记录查询
     * @Author : leizhang
     * @Date 4:32 下午 2021/11/21
     * @param attendanceDailyRecord
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceDailyRecord>
     **/
    List<AttendanceDailyRecord> listOfAttendanceRecords(AttendanceDailyRecord attendanceDailyRecord);

    List<AttendanceDailyRecord> listOfAttendanceRecordByWorkTime(AttendanceDailyRecord attendanceDailyRecord);
    /**
     * @Description : 个人记录查询byIds
     * @Author : leizhang
     * @Date 4:37 下午 2021/11/23
     * @param ids
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceDailyRecord>
     **/
    List<AttendanceDailyRecord> listOfAttendanceRecordsBuIds(int[] ids);

    /**
     * @Description : 月汇总记录查询
     * @Author : leizhang
     * @Date 3:06 下午 2021/11/24
     * @param
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceMonthSumRecord>
     **/
    List<AttendanceMonthSumRecord> listOfAttendanceMonthSumRecords(AttendanceMonthSumRecord attendanceMonthRecord);

    /**
     * @Description : 月考勤输
     * @Author : leizhang
     * @Date 3:30 下午 2021/11/24
     * @param attendanceMonthRecord
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceMonthRecord>
     **/
    List<AttendanceMonthRecord> listOfAttendanceMonthRecords(AttendanceMonthRecord attendanceMonthRecord);
    
    /**
     * @Description : 月考勤记录导出
     * @Author : leizhang
     * @Date 5:09 下午 2021/11/25
     * @param attendanceDailyRecord
     * @return java.util.List<com.ruoyi.worker.domain.workAttendance.AttendanceDailyRecord>
     **/
    List<AttendanceDailyRecord> listOfAttendanceRecordExport(AttendanceDailyRecord attendanceDailyRecord);

    /**
     * @Description : 计算当月休息，出勤之和
     * @Author : leizhang
     * @Date 10:52 下午 2021/11/26
     * @param requestParam
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String,Object>> sumAttendance(@Param("requestParam") Map<String,Object> requestParam);
    
    /**
     * @Description : 计算实际出勤次数
     * @Author : leizhang
     * @Date 11:25 下午 2021/11/26
     * @param requestParam
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     **/
    List<Map<String,Object>> sumAttendanceNormal(@Param("requestParam") Map<String,Object> requestParam);
}
